#!/bin/bash
PUB_KEY_FILE="$HOME/.ssh/id_rsa.pub"

# 检查sshpass是否安装
if ! command -v sshpass &> /dev/null; then
    echo "sshpass 未安装。请先安装 sshpass，然后再运行此脚本。"
    exit 1
fi



# 检查是否提供了目标主机列表文件
if [ $# -eq 0 ]; then
     echo "用法: $0 <目标主机列表文件> <SSH端口号> <密码>"
     exit 1
 fi

# 目标主机列表文件
host_list_file="$1"
# 检查文件是否存在
if [ ! -f "$host_list_file" ]; then
     echo "错误: 文件 '$host_list_file' 不存在"
     exit 1
fi

# SSH端口号
ssh_port="$2"
# 密码
password="$3"


while IFS= read -r host; do
    echo "正在处理 $host..."
    # 生成SSH密钥对（如果不存在）
    if [ ! -f ~/.ssh/id_rsa ]; then
      ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
    fi
    # 使用sshpass和ssh-copy-id将公钥拷贝到目标主机上
    sshpass -p "$password" ssh-copy-id -o StrictHostKeyChecking=no -i "$PUB_KEY_FILE" root@${host} &> /dev/null

    # 检查结果并输出
    if [ $? -eq 0 ]; then
        echo "成功将公钥拷贝到 $host"
    else
       echo "无法将公钥拷贝到 $host，请手动处理"
    fi 
done < "$host_list_file"
